#include<stdio.h>
#include<string.h>
int len=10; //存放已在的学生人数
int len2=0; //存放要添加的元素
int yonghulen=1;    //存放用户数量
struct  students{
	char name[8];
	int number;
	int age;
    int group;
	int grades;
}stu[100]={
    {"a",1,2,1,99},	//第一位学生
	{"b",2,7,1,88},	//第二位学生
	{"c",3,6,1,76},	//第三位学生
	{"d",4,10,1,74},	//第四位学生
	{"e",5,17,1,68},	//第五位学生
	{"f",6,15,2,72},	//第六位学生
	{"g",7,27,2,64},	//第七位学生
	{"h",8,21,2,83},	//第八位学生
	{"i",9,29,2,84},	//第九位学生
	{"j",10,20,2,63}
};

struct yonghus{
    int zhanghu;
    int mima;
}yh[32]={
    {3164,12345}
};

void input(void){ //输入
    printf("请输入学生总人数:<=100:");
    scanf("%d",&len);
    if(len >100){
        printf("请输入100以内的数\n");
        return;
    }
    for(int i=0;i<len;i++){
        printf("请输入第%d名学生姓名： 学号：  年龄： 所属组： 成绩：\n",i+1);
        scanf("%s %d %d %d %d",stu[i].name,&stu[i].number,&stu[i].age,&stu[i].group,&stu[i].grades);
    }
    printf("添加成功!\n");
}

void tianjia(void){ // 添加学生
    printf("请输入要添加的学生数量(%d<=):",100-len);
    scanf("%d",&len2);
    for(int i=len;i<len+len2;i++){
        printf("请输入第%d名学生姓名： 学号：  年龄： 所属组： 成绩：\n",i+1);
        scanf("%s %d %d %d %d",stu[i].name,&stu[i].number,&stu[i].age,&stu[i].group,&stu[i].grades);
        for(int j=0;j<len;j++){
            if(stu[i].number == stu[j].number){
                memset(&stu[i],0,sizeof(stu[i]));
                printf("添加失败,学号重复\n");
                return; 
            }
        }
    }
    len+=len2;
    printf("添加成功!\n");
}

int search(int n){   //寻找
    if( n == 1 ){
        char ch[8]={};
        printf("请输入姓名:");
        scanf("%s",ch);
        int panduan=-1;
        
        for(int i=0;i<strlen(stu[i].name);i++){
            if(strlen(ch) == strlen(stu[i].name)){
                panduan=strcmp(stu[i].name,ch);
            }
            if(panduan == 0){
                printf("学生姓名：%s 学号：%d  年龄：%d 所属组：%d 成绩：%d\n",
                stu[i].name,stu[i].number,stu[i].age,stu[i].group,stu[i].grades);
                return i;
            }
        }
        if(panduan != 0){
            printf("未查询到此人\n"); 
        } 
        return 0;  
    }
    int k=0;
    switch (n){
        case 2:     //学号查找
            printf("请输入学号:");
            scanf("%d",&k);
            for(int i =0;i<len;i++){
                if(stu[i].number == k){
                printf("学生姓名：%s 学号：%d  年龄：%d 所属组：%d 成绩：%d\n",
                stu[i].name,stu[i].number,stu[i].age,stu[i].group,stu[i].grades);
                return i;
                }
            }
            printf("未查询到该学号\n");
            break;
        case 3:     //学习小组查找
            printf("请输入学习小组编号:");
            scanf("%d",&k);
            for(int i =0;i<len;i++){
                if(stu[i].group == k){
                printf("学生姓名：%s 学号：%d  年龄：%d 所属组：%d 成绩：%d\n",
                stu[i].name,stu[i].number,stu[i].age,stu[i].group,stu[i].grades);
                return i;
                }
            }
            printf("未查询到该组\n");
            break;
        case 4:     //学生分数查找
            printf("请输入学生分数:");
            scanf("%d",&k);
            for(int i =0;i<len;i++){
                if(stu[i].grades == k){
                printf("学生姓名：%s 学号：%d  年龄：%d 所属组：%d 成绩：%d\n",
                stu[i].name,stu[i].number,stu[i].age,stu[i].group,stu[i].grades);
                return i;
                }
            }
            printf("未查询到该分数\n");
            break;
        case 5:     //学生年龄查找
            printf("请输入年龄:");
            scanf("%d",&k);
            for(int i =0;i<len;i++){
                if(stu[i].age == k){
                printf("学生姓名：%s 学号：%d  年龄：%d 所属组：%d 成绩：%d\n",
                stu[i].name,stu[i].number,stu[i].age,stu[i].group,stu[i].grades);
                return i;
                }
            }
            printf("未查询到该年龄的学生\n");
            break;
        default:
            break;
        }
    
}

void dayin(void){       //打印全部学生信息
    for(int i=0; i<len;i++){
       printf("学生姓名：%s 学号：%d  年龄：%d 所属组：%d 成绩：%d\n",
        stu[i].name,stu[i].number,stu[i].age,stu[i].group,stu[i].grades); 
    }
}

void xiugai(void){      //修改学生信息
    int i =search(2);
    printf("请输入修改后的学生姓名： 学号：   年龄： 所属组： 成绩：(用空格隔开)\n");
    scanf("%s %d %d %d %d",stu[i].name,&stu[i].number,&stu[i].age,&stu[i].group,&stu[i].grades);
    printf("修改成功");
}

void delete(void){      //删除学生信息
    int i =search(2);
    memset(&stu[i],0,sizeof(stu[i]));
    for(int j =i; j<len;j++){
        stu[j]=stu[j+1];
    }
    len--;
    printf("删除成功\n");
}

void xitong(void){      //系统页面功能选择
    int true=1,k=0;
    while(true){
        printf("请选择:1查看所有学生信息,2查询,3添加学生信息,4修改,5删除,6退出\n");
        scanf("%d",&k);
        if(k == 1){
            dayin();
        }
         else if(k == 2){
            int n=0;
            printf("1按姓名搜寻,2按学号搜寻,3按学习小组搜寻,4按学生分数搜寻,5按学生年龄搜寻\n");
            scanf("%d",&n);
            search(n);
        }
        else if(k == 3){
            int n2=0;
            printf("请选择:1从头开始输入,2继续添加\n");
            scanf("%d",&n2);
            if(n2 == 1){
                memset(&stu,0,sizeof(stu));
            }
            switch (n2)
            {
            case 1:
                input();
                break;
            case 2:
                tianjia();
                break;
            default:
                break;
            }
        }
        else if(k == 4){
           xiugai();
        }
        else if(k == 5){
            delete();
        }
        else{
            true=0;
        }
    }
}

void getin(void){   //登陆注册界面
    int choose=0,n=0,true=2,mima=0,zhanghu=0;
    while(true){
        printf("请选择:1登陆,2注册,3退出\n");
        scanf("%d",&choose);
        n=sizeof(yh)/sizeof(yh[0]);
        switch (choose)
        {
            case 1:
                printf("请输入账户: 密码: (用空格隔开)\n");
                scanf("%d %d",&zhanghu,&mima);
                for(int i=0;i<n;i++){
                    if((yh[i].zhanghu == zhanghu) && (yh[i].mima == mima)){
                        printf("登陆成功\n");
                        xitong();
                    }
                }
                break;
            case 2:
                if(len > 31){
                    len=31;
                    printf("用户已达上限\n");
                    break;
                }
                printf("请输入要注册的账户: 密码: (用空格隔开)\n");
                scanf("%d %d",&yh[len].zhanghu,&yh[len].mima);
                len++;
                printf("注册成功\n");
                break;
            default:
                true=0;
                break;
        }
    } 
}

int main(void)
{	
    getin();
	return 0;
}